package convert

import (
	"errors"
	"strconv"
)

// Int8ToInt 将int8类型转换为int类型，由于int8在int范围内，直接转换
func Int8ToInt(value int8) (int, error) {
	return int(value), nil
}

// Int8ToInt16 将int8类型转换为int16类型，由于int8在int16范围内，直接转换
func Int8ToInt16(value int8) (int16, error) {
	return int16(value), nil
}

// Int8ToInt32 将int8类型转换为int32类型，由于int8在int32范围内，直接转换
func Int8ToInt32(value int8) (int32, error) {
	return int32(value), nil
}

// Int8ToInt64 将int8类型转换为int64类型，由于int8在int64范围内，直接转换
func Int8ToInt64(value int8) (int64, error) {
	return int64(value), nil
}

// Int8ToUint 将int8类型转换为uint类型，如果value为负数则返回错误，否则直接转换
func Int8ToUint(value int8) (uint, error) {
	if value < 0 {
		return 0, errors.New("negative value cannot be converted to uint")
	}
	return uint(value), nil
}

// Int8ToUint8 将int8类型转换为uint8类型，如果value为负数则返回错误，否则直接转换
func Int8ToUint8(value int8) (uint8, error) {
	if value < 0 {
		return 0, errors.New("negative value cannot be converted to uint8")
	}
	return uint8(value), nil
}

// Int8ToUint16 将int8类型转换为uint16类型，如果value为负数则返回错误，否则直接转换
func Int8ToUint16(value int8) (uint16, error) {
	if value < 0 {
		return 0, errors.New("negative value cannot be converted to uint16")
	}
	return uint16(value), nil
}

// Int8ToUint32 将int8类型转换为uint32类型，如果value为负数则返回错误，否则直接转换
func Int8ToUint32(value int8) (uint32, error) {
	if value < 0 {
		return 0, errors.New("negative value cannot be converted to uint32")
	}
	return uint32(value), nil
}

// Int8ToUint64 将int8类型转换为uint64类型，如果value为负数则返回错误，否则直接转换
func Int8ToUint64(value int8) (uint64, error) {
	if value < 0 {
		return 0, errors.New("negative value cannot be converted to uint64")
	}
	return uint64(value), nil
}

// Int8ToFloat32 将int8类型转换为float32类型，直接转换
func Int8ToFloat32(value int8) (float32, error) {
	return float32(value), nil
}

// Int8ToFloat64 将int8类型转换为float64类型，直接转换
func Int8ToFloat64(value int8) (float64, error) {
	return float64(value), nil
}

// Int8ToString 将int8类型转换为string类型，使用strconv.Itoa函数转换
func Int8ToString(value int8) string {
	return strconv.Itoa(int(value))
}

// Int8ToBool 将int8类型转换为bool类型，非零值转换为true，零值转换为false
func Int8ToBool(value int8) bool {
	return value != 0
}
